package com.itheima.springbootenable;

import com.itheima.config.MyImportBeanDefinitionRegistrar;
import com.itheima.config.MyImportSelector;
import com.itheima.config.UserConfig;
import com.itheima.domain.Role;
import com.itheima.domain.User;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Import;
import redis.clients.jedis.Jedis;

/**
 * @ComponentScan  扫描范围:当前引导类所在包及其子包
 * com.itheima.springbootenable
 * com.itheima.config
 * 1.使用@ComponentScan扫描com.itheima.config包
 * 2.可以使用@Import注解加载一些类，这些类都会被spring创建，并放入IOC容器
 * 3.可以对Import注解进行封装
 */

/**
 * Import四种用法
 * 1、导入bean
 * 2、导入配置类
 * 3、导入ImportSelector的实现类
 */
@SpringBootApplication
//@ComponentScan("com.itheima.config")
//@Import(UserConfig.class)
//@EnableUser

//@Import(User.class)
//@Import(UserConfig.class)
//@Import(MyImportSelector.class)
@Import(MyImportBeanDefinitionRegistrar.class)
public class SpringbootEnableApplication {

    public static void main(String[] args) {
        ConfigurableApplicationContext context = SpringApplication.run(SpringbootEnableApplication.class, args);

       /* //获取bean
        Object user= context.getBean("user");
        System.out.println(user);*/

       /* User user = context.getBean(User.class);
        System.out.println(user);*/

        /*Role role = context.getBean(Role.class);
        System.out.println(role);*/

       /* Map<String, User> map = context.getBeansOfType(User.class);
        System.out.println(map);*/
        Jedis jedis = context.getBean(Jedis.class);
        System.out.println(jedis);
        jedis.set("name","itcast");

        String name=jedis.get("name");
        System.out.println(name);
    }
    @Bean
    public Jedis jedis(){
        return new Jedis("localhost",6379);
    }

}
